Últimamente escuchamos mucho en el mundo IT hablar sobre DevOps, está en boca de todos: Ofertas de empleo, artículos, whitepapers. A menudo relacionado con la transformación digital y el mundo agile. Pero, ¿qué significa DevOps exactamente?
Qué es DevOps
Si nos ceñimos a lo que dice la Wikipedia sobre DevOps, nos encontramos con la siguiente definición: DevOps (proveniente de la unión en inglés de development y operations) es una práctica de ingeniería de software que tiene como objetivo unificar el desarrollo de software (Dev) y la operación del software (Ops). Es decir, es una unión entre el desarrollo de software y la administración de sistemas.
La cultura DevOps
Cuando se habla de la “cultura” DevOps es porque el cambio a nivel organizativo y cultural en las empresas que adoptan esta metodología debe ser bastante fuerte. Con la metodología DevOps se busca ser más colaborativo, aumentar la comunicación entre departamentos y, de hecho, integrarlos y unificarlos para que Operaciones no vaya separado de Desarrollo.
Lo que no hay que confundir es DevOps con tener más responsabilidades por parte del desarrollador o el IT manager. Lo que se busca es que el perfil DevOps sea una unión de desarrollador y sistemas, una mezcla de ambos, aplicando así esta metodología agile.
La cultura DevOps, básicamente, trata de ser más ágil, entregando productos a mayor velocidad y de mayor calidad. Los equipos estarán más alineados, menos estancos y participarán en más etapas del ciclo de vida del producto.
Un buen ejemplo de empresa que ha adoptado la cultura DevOps es Microsoft Azure.
Ventajas de DevOps a la hora de trabajar
Como adelantábamos antes, aplicar la metodología DevOps en una empresa traerá muchos beneficios a la hora de trabajar y crear herramientas aplicando las metodologías agile. Veamos algunos ejemplos:
Fomento de la colaboración y responsabilidad: Como decíamos, DevOps consiste en fusionar dos departamentos, desarrollo y operaciones. De esta forma, la colaboración debe ser total, así como el asumo de responsabilidades por parte de todas las partes del equipo para que el desarrollo llegue a buen puerto, puesto que ambas partes, development & operations, dependen del mismo equipo.
Metodología agile: La idea de DevOps es entregar herramientas más rápido (escalar, ahora, es más fácil que nunca), optimizando el coste y mejorando la productividad de los ingenieros DevOps.
Automatización de procesos: Para poder ser más rápidos y productivos, habrá que automatizar procesos en el desarrollo utilizando las herramientas apropiadas.
Centrarse en el cliente: Gracias a la metodología agile, esto es más sencillo que nunca. DevOps tiene como máxima que el cliente sea el centro de todos y la creación de herramientas sea totalmente personalizable.
Prácticas de DevOps
Para aplicar una correcta unión entre desarrollo y operaciones, los ingenieros DevOps tienen que llevar a cabo unas prácticas específicas. Las siguientes son las más recomendadas para ser totalmente agile:
Integración continua: Se busca que los ingenieros combinen los cambios de código de manera habitual, para que de manera automática, estos se actualicen y se ejecuten las pruebas pertinentes. De esta forma, se encuentran errores más rápidamente, se mejorará la calidad del software y aumentará la velocidad de desarrollo a la hora de publicar nuevas versiones.
Entrega continua: Aquí hablamos de otra prácticas por la cual se compilan, prueban y preparan de forma automática cualquier cambio en el código y es entregado a la fase de producción. Esto irá de la mano de la integración continua y supone lo mismo: De esta forma, podremos implementar nuevas versiones o cambios más rápido.
APIs o microservicios: Aquí estamos ante las APIs, las cuales nos sirven para crear pequeños servicios de software, de manera independiente, que se comunican con otras APIs o microservicios a través de una interfaz. Lo que hace es que sea más rápido desarrollar el conjunto global de nuestro software, puesto que las APIs son independientes y podemos trabajar sobre ellas sin que afecte al resto de microservicios.
Sistemas como código: Aquí lo que hace el ingeniero es administrar la infraestructura de sistemas aplicando técnicas de desarrollo de software con código, interactuando con ella mediante la programación. Al estar definidos por código, los servidores y demás sistemas se podrán implementar, nuevamente, de manera rápida aplicando patrones estandarizados.
Monitorización y registro: Monitorear el funcionamiento de una aplicación y realizar un registro de cómo el usuario se relaciona con dicha herramienta será crucial para entender cómo funciona, dónde falla y qué habría que mejorar. De esta forma, los ingenieros de development & operations, serán mucho más eficientes a la hora de realizar cambios en el software o el sistema.
Comunicación y colaboración: Como ya hemos mencionado, la cultura DevOps tiene como base una buena comunicación y cooperación entre las partes de desarrollo y operaciones. De esta forma podremos ser más ágiles y aplicar todas estas prácticas de forma óptima.
Qué hace un ingeniero DevOps
Últimamente, las empresas solicitan en sus ofertas de empleo Ingeniero DevOps o, al menos, desarrollador software con conocimientos en la metodología DevOps y Agile. Pero, ¿Qué requisitos tiene que tener una persona para ser considerada DevOps? Veámoslo:
Amplios conocimientos en desarrollo software y gestión de bases de datos: Deberá dominar diferentes lenguajes de programación como C #, JSon, XSL, Python, Java / Javascript, PHP, MySQL, etc.
Dominio de herramientas específicas relacionadas con sistemas y operaciones en los campos de Cloud computing (Azure DevOps, AWS, Google Cloud Platform…), sistema operativos, repositorios de código (Git, Github…), contenedores (Kubernetes, Dokker…), sistemas de automatización y monitorización.
Conocimiento en metodologías agile: Para aplicar prácticas de DevOps hay que conocer a fondo tanto la metodología SCRUM y Kanban. Las cuales tienen muchas cosas en común con la “cultura” DevOps.
Reingeniería de procesos y formación continua: Tienen que ser capaces de adaptar los desarrollos realizados a cualquier innovación o petición del cliente de forma eficiente, por lo que tiene que ser una persona con capacidad analítica, creativa y con interés en formarse constantemente en nuevos procesos.
Ya hemos visto qué requisitos necesita un ingeniero DevOps, ahora veamos de forma específica qué hace:
Será la persona que se encargue de aportar todo lo necesario en cuanto a recursos o infraestructura para llevar a cabo el proyecto.
Deberá asegurarse que se cumple la premisa de integración y entrega continua.
También deberá ser capaz de escoger el mejor modelo de implementación para cada proyecto.
Deberá crear un protocolo de pruebas acorde a la herramienta y aplicarlo.
Monitoreo de todos los procesos de desarrollo y operaciones. Además de análisis posterior de los resultados conseguidos en cada fase del proyecto.
Por último, deberá ser capaz de proponer mejoras e identificar posibles errores en la herramienta para una mayor satisfacción del cliente.
Todas estas funciones, tienen el mismo objetivo: Desarrollar de forma más rápida, barata, competitiva y reducir la posibilidad de error.